package com.app.activity;

import android.app.ActionBar;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v4.widget.DrawerLayout;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;

import com.app.adapter.NavigationDrawerFragment;
import com.app.constants.Constants;
import com.app.constants.ItemMenu;
import com.app.fragment.HomeFragment;
import com.app.fragment.TestFragment;
import com.app.tourismmer.R;

public class MainActivity extends Activity implements NavigationDrawerFragment.NavigationDrawerCallbacks {

    /**
     * Fragment managing the behaviors, interactions and presentation of the
     * navigation drawer.
     */
    private NavigationDrawerFragment mNavigationDrawerFragment;

    /**
     * Used to store the last screen title. For use in
     * {@link #restoreActionBar()}.
     */
    private CharSequence mTitle;

    // @Override
    // protected void onDestroy() {
    // super.onDestroy();
    // Intent intent = new Intent(Intent.ACTION_MAIN);
    // intent.addCategory(Intent.CATEGORY_HOME);
    // intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    // startActivity(intent);
    // }

    private int itemMenuSelected = ItemMenu.HOME;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.activity_main);

	// SharedPreferences.Editor editor = getSharedPreferences(
	// Constants.TOURISMER_SHARE_PREFERENCES, Context.MODE_PRIVATE)
	// .edit();
	// editor.putBoolean(Constants.PREFERENCES_IS_CONECTED, false);
	// editor.commit();

	SharedPreferences preferencias = getSharedPreferences(Constants.TOURISMER_SHARE_PREFERENCES, MODE_PRIVATE);
	Boolean conectado = preferencias.getBoolean(Constants.PREFERENCES_IS_CONECTED, Boolean.FALSE);

	if (conectado == false) {
	    startActivity(new Intent(this, LoginActivity.class));
	}

	mNavigationDrawerFragment = (NavigationDrawerFragment) getFragmentManager().findFragmentById(
		R.id.navigation_drawer);
	mTitle = getTitle();

	// Set up the drawer.
	mNavigationDrawerFragment.setUp(R.id.navigation_drawer, (DrawerLayout) findViewById(R.id.drawer_layout));

    }

//    public void onClickTest(View view) {
//	Toast.makeText(this, "teste", Toast.LENGTH_LONG).show();
//    }

    @Override
    public void onNavigationDrawerItemSelected(int position) {
	itemMenuSelected = position;

	if (itemMenuSelected == ItemMenu.HOME) {

	    // update the main content by replacing fragments
	    FragmentManager fragmentManager = getFragmentManager();
	    fragmentManager.beginTransaction().replace(R.id.container, new HomeFragment()).commit();
	    /*FragmentManager fragmentManager2 = getFragmentManager();
	    fragmentManager2.beginTransaction().replace(R.id.detalhe, new TestFragment()).commit();*/

	} else {

	    // update the main content by replacing fragments
	    FragmentManager fragmentManager = getFragmentManager();
//	    fragmentManager
	    fragmentManager.beginTransaction().replace(R.id.container, TesteFragment.newInstance(position + 1))
		    .commit();

	}

    }
    
    public void teste() {
	getActionBar().setHomeButtonEnabled(false);
    }

    public void onSectionAttached(int itemSelectedMenu) {
	switch (itemSelectedMenu) {
	case ItemMenu.HOME:
	    mTitle = getString(R.string.title_home);
	    break;
	case 1:
	    mTitle = getString(R.string.title_section2);
	    break;
	case 2:
	    mTitle = getString(R.string.title_section3);
	    break;
	}
    }

    public void restoreActionBar() {
	ActionBar actionBar = getActionBar();
	actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
	actionBar.setDisplayShowTitleEnabled(true);
	actionBar.setTitle(mTitle);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
	if (!mNavigationDrawerFragment.isDrawerOpen()) {
	    // Only show items in the action bar relevant to this screen
	    // if the drawer is not showing. Otherwise, let the drawer
	    // decide what to show in the action bar.

	    if (itemMenuSelected == ItemMenu.HOME) {
		getMenuInflater().inflate(R.menu.menu_home, menu);
	    }

	    restoreActionBar();
	    return true;
	}
	return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
	
	// toggle nav drawer on selecting action bar app icon/title
	if (mNavigationDrawerFragment.onOptionsItemSelected(item)) {
	    return true;
	}
	// Handle action bar actions click
	switch (item.getItemId()) {

	case R.id.menu_create_groups:
	    openCreateGroup();
	    return true;

	case R.id.action_settings:
	    return true;

	default:
	    return super.onOptionsItemSelected(item);

	}

	// Handle action bar item clicks here. The action bar will
	// automatically handle clicks on the Home/Up button, so long
	// as you specify a parent activity in AndroidManifest.xml.
	// int id = item.getItemId();
	// if (id == R.id.menu_create_groups) {
	// return true;
	// }
	// return super.onOptionsItemSelected(item);
    }

    public void openCreateGroup() {
	startActivity(new Intent(this, CreateGroupActivity.class));
    }

    /**
     * A placeholder fragment containing a simple view.
     */
    public static class TesteFragment extends Fragment {
	/**
	 * The fragment argument representing the section number for this
	 * fragment.
	 */
	private static final String ARG_SECTION_NUMBER = "section_number";

	/**
	 * Returns a new instance of this fragment for the given section number.
	 */
	public static TesteFragment newInstance(int sectionNumber) {
	    TesteFragment fragment = new TesteFragment();
	    Bundle args = new Bundle();
	    args.putInt(ARG_SECTION_NUMBER, sectionNumber);
	    fragment.setArguments(args);
	    return fragment;
	}

	public TesteFragment() {
	}

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
	    View rootView = inflater.inflate(R.layout.fragment_teste, container, false);
	    return rootView;
	}

	// @Override
	// public void onAttach(Activity activity) {
	// super.onAttach(activity);
	// ((MainActivity) activity).onSectionAttached(
	// getArguments().getInt(ARG_SECTION_NUMBER));
	// }
    }

}
